[AWS] 퍼블릭,프라이빗 서브넷 VPC 구성 및 통신


단일 퍼블릭 서브넷에 속한 EC2 인스턴스가 외부 인터넷 구간으로 통신 되는 과정을 실습

실습 단계

퍼블릭 서브넷 VPC 생성

  1. VPC 생성
  2. 퍼블릭 서브넷 생성
  3. 인터넷 게이트웨이 생성 및 VPC 연결
  4. 퍼블릭 라우팅 테이블 생성 및 서브넷 연결
  5. 퍼블릭 라우팅 테이블 경로 추가

검증

  1. EC2 인스턴스 생성
  2. EC2 인스턴스 접근 후 통신 확인

VPC 생성

VPC이름, CIRD 대역 설정

  • 경로: 서비스 - VPC - 가상 프라이빗 클라우드 - VPC 생성 클릭
  • VPC 생성시 가상 라우터가 자동으로 생성
  • 기본 라우팅 테이블도 보유하고 있다.

1-1브이피시생성

퍼블릭 서브넷 생성

  • 경로: 서비스 - VPC - 가상 프라이빗 클라우드 - 서브넷 생성 클릭
  • 이름, VPC선택, 가용 영역 선택, IPv4 CIDR 대역을 설정해준다.

    • 서브넷의 네트워크 대역폭은 VPC 생성 시 대역범위 내여야한다.
  • 퍼블릭 서브넷만 생성한 것이기 때문에 생성한 VPC는 아직 가상 라우터가 가지고 있는 기본 라우팅 테이블을 사용중

1-2서브넷설정

인터넷 게이트웨이 생성 및 VPC 연결

외부 인터넷 구간과 통신을 하기 위한 인터넷 게이트웨이 생성 후 VPC와 연결

  • 경로: 서비스 - VPC - 가상 프라이빗 클라우드 - 인터넷 게이트웨이 생성 클릭

1-3인터넷게이트웨이 생성

  • 인터넷 게이트웨이 생성 후 VPC 연결

1-4인터넷게이트웨이 연결

  • 외부 통신을 위한 인터넷 게이트웨이 연결하였지만, 인터넷 구간으로 향하는 라우팅 경로를 설정해 주어야함

1-5인터넷게이트웨이연결후

퍼블릭 라우팅 테이블 생성 및 서브넷 연결

  • 경로: 서비스 - VPC - 가상 프라이빗 클라우드 - 라우팅 테이블
  • 라우팅 테이블 이름 설정 및 생성한 VPC 선택

1-6라우팅테이블 생성

  • 경로: 해당 라우팅 테이블 선택 - 세부사항 - 세브넷 연결 - 서브넷 연결 편집 클릭
  • 이전에 만들었던 서브넷이랑 라우팅 테이블을 연결
  • 이제 퍼블릭 서브넷은 기본 라우팅 테이블이 아닌, 새로 생성한 퍼블릭 라우팅 테이블을 사용

1-7서브넷연결

퍼블릭 라우팅 테이블 경로 추가

  • 경로: 서비스 - VPC - 가상 프라이빗 클라우드 - 라우팅 테이블 - 세부정보 - 라우팅 편집 클릭
  • 인터넷 게이트웨이와 모든 경로 허용 추가

1-8라우팅테이블에 인터넷게이트웨이 추가

검증

  • EC2를 생성하여 새롭게 생성한 VPC로 변경

    • 네트워크: 생성한 VPC 선택
    • 서브넷: 생성한 퍼블릭 서브넷 선택
    • 퍼블릭 IP 자동할당: 활성화
  • 이외 나머지 설정은 기본 값

1-9ec2확인

목적지 타깃을 google.com으로 하여 외부 인터넷으로 정상적인 통신이 가능한 것을 확인

프라이빗 서브넷 VPC 구성

프라이빗 서브넷을 생성하여 외부 인터넷 구간과 통신 되는 과정을 실습

실습단계

프라이빗 서브넷 추가

  1. 프라이빗 서브넷 생성
  2. NAT 게이트웨이 생성
  3. 프라이빗 라우팅 테이블 생성 및 서브넷 연결
  4. 프라이빗 라우팅 테이블 경로 추가 =

검증

  1. EC2 인스턴스 생성
  2. EC2 인스턴스 접근 후 통신 확인
  3. 퍼블릭 서브넷과 프라이빗 서브넷의 통신 흐름

프라이빗 서브넷 추가

프라이빗 서브넷 생성

  • 경로: 서비스 - VPC - 가상 프라이빗 클라우드 - 서브넷 생성 클릭
  • 생성한 VPC 선택, 서브넷 이름설정, 가용영역 선택, 네트워크 대역 설정 후 생성

    • 프라이빗 서브넷은 아직 기본 라우팅 테이블을 사용중

2-1서브넷생성

NAT 게이트웨이 생성

  • 경로: 서비스 - VPC - 가상 프라이빗 클라우드 - NAT 게이트웨이 생성 클릭
  • NAT 게이트웨이는 인터넷 게이트웨이와 마찮가지로 외부와 통신을 할 때 사용하지만, 프라이빗 서브넷에서 외부로 통신하기 위해 사용한다.
  • NAT게이트웨이의 역할은 프라이빗 네트워크를 외부로 보내기 위해 사용되지만, 서브넷의 배치는 퍼블릭 서브넷에 배치되어야 한다.

2-2넷게이트웨이 생성

프라이빗 라우팅 테이블 생성 및 서브넷 연결

  • 기존에 생성한 VPC에 프라이빗 라우팅 테이블을 생성
  • 경로: 서비스 - VPC - 가상 프라이빗 클라우드 - 라우팅 테이블 생성 클릭

2-3프라이빗라우팅테이블생성

  • 프라이빗 서브넷과 연결

2-4 프라이빗라우팅테이블서브넷연결

프라이빗 라우팅 테이블 경로 추가

  • 현재 프라이빗 라우팅 테이블에는 외부 인터넷 구간 통신을 위한 라우팅 경로가 없음
  • 모든 네트워크가 NAT 게이트웨이로 향하는 경로 추가
  • 경로: 서비스 - 가상 프라이빗 클라우드 - 라우팅 테이블 - 세부정보 - 라우팅 편집 클릭

2-5 프라이빗라우팅테이블추가

검증

  • 프라이빗 서브넷을 가진 EC2 새로 생성
  • 네트워크, 서브넷, 설정
  • 그외 설정 기본 값

2-6 프라이빗이씨투

  • 고급 세부 정보 - 데이터 입력란에 해당 코드 입력

    • 해당 코드는 EC2가 실행될 때 코드를 실행하게 됨
    • 해당 코드는 root 비밀번호 지정 후, 키페어 없이 root의 암호 입력 방식으로 로그인하는 설정임
#!/bin/bash
(
echo "qwe123"
echo "qwe123"
) | passwd --stdin root
sed -i "s/^PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config
sed -i "s/^#PermitRootLogin yes/PermitRootLogin yes/g" /etc/ssh/sshd_config
service sshd restart
  • 프라이빗 EC2 생성 및 세부정보

    • 퍼블릭 IP 주소가 없다.
    • NAT 게이트웨이는 네트워크가 내부에서 외부로 나갈 순 있지만, 외부에서 내부로 들어오는 것은 불가능
    • 따라서 이전에 만들었던 퍼블릭 EC2 인스턴스에 최초 진입 후, 로컬통신을 통해 프라이빗 EC2로 접근

2-7 프라이빗이씨투생성

  • 프라이빗 EC2에 접근한 모습

    • 처음 퍼블릭 EC2 접근 후, SSH 프로토콜을 통해 프라이빗 EC2에 접속한 모습

2-8 프라이빗이씨투에 접속

  • 정상적으로 ping이 떨어지는 모습

2-9검증확인

중간에 NAT 게이트웨이를 설정할 때, 서브넷 설정을 프라이빗으로 설정해두어 외부 네트워크와 통신이 안됬었다.

NAT 게이트웨이를 지웠다가 다시 제대로 퍼블릭 서브넷으로 설정하니 통신이 된 모습

이후 모든 자원 삭제

  • EC2 인스턴스 종료
  • NAT 게이트웨이 삭제
  • 탄력적 IP삭제
  • VPC 삭제

Reference

따라하며 배우는 AWS 네트워크 입문


Hello, I'm@nickhealthy
개발자를 꿈꾸고, 파이썬과 클라우드에 관심이 많은 비전공자

Github